import 'dart:async';

/// 抽象平台服务：统一提供跨平台的少量能力。
///
/// 设计目标：
/// - 将平台差异隔离在具体实现文件中（IO/Web）；
/// - 对外暴露一致的 API，便于纯 Dart 包调用；
/// - 仅涵盖与日志库相关的必要能力（平台版本、日志根目录、文件事件）。
abstract class PlatformService {
  /// 返回平台版本或标识字符串，用于调试或展示。
  Future<String?> getPlatformVersion();

  /// 返回日志根目录的绝对路径。
  /// - IO 平台通常位于 `ApplicationSupport/pd_log`；
  /// - Web 平台不支持本地文件系统，返回 null。
  Future<String?> getLogRootPath();

  /// 文件事件流（created/modified/deleted）。
  /// - IO 平台通过目录监听或轮询提供；
  /// - Web 平台为空流，用于占位保持 API 一致。
  Stream<Map<String, dynamic>> fileEvents();
}

/// 条件导入的工厂方法占位；将由具体平台文件实现。
PlatformService getPlatformService() => throw UnsupportedError(
    'No PlatformService implementation found for this platform.');
